<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
        闭包作用
        1、使函数内部的变量在函数执行完成后任然存活在内存中
        2、让函数外部可以访问到函数内部的数据

        
     -->
    <script>
        // 将函数作为另一个函数返回值
        function fun1 () { 
            var a = 2
            function fun2 () { 
                a++
                console.log(a)
            }
            return fun2
        }

        var f = fun1()  // 这里fun1这个函数对象被f引用不是垃圾对象，不会被释放掉 --> 还在引用着闭包所以还是可以访问到a
        f() // 3  
        f() // 4

        // 将函数作为实参传递给另一个函数调用
        function showDelay(msg, time) { 
            setTimeout(function () { 
                alert(msg)
            }, time)
        }
        showDelay('atguigu', 2000)
    </script>
</body>
</html>